Mentre visualizziamo i dati come griglie 2D per comodità matematica, l'hardware vede solo un flusso continuo di byte in 1D. Comprendere questa "realtà lineare" è la prerequisito per implementare schemi di riduzione per riga modelli di riduzione—ad esempio trovare il valore massimo o la somma degli esponenti.
1. Il principio della "piattaforma lineare"
Ogni tensore multidimensionale è fisicamente memorizzato sequenzialmente. Per implementare $\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$, dobbiamo identificare il segmento lineare che rappresenta una riga e effettuare traversamenti per calcolare il massimo e la somma.
2. Stabilità numerica
Perché il softmax richiede stabilizzazione? I valori di ingresso elevati causano lo scoppio di $e^{x}$. Stabilizziamo tramite: $$\text{exp}(x_i - \text{max}(x))$$ Questo obbliga il progettista del kernel a eseguire una riduzione lineare a due passaggi (massimo poi somma) prima della normalizzazione finale.
3. Verifica tramite righe brevi
Durante lo sviluppo dei kernel Triton, utilizziamo test solo su righe brevi (ad esempio larghezza 16) per garantire che la nostra aritmetica lineare dei puntatori catturi correttamente ogni elemento prima di scalare verso carichi di lavoro di produzione.